perm filename TESTJ[E,ALS]2 blob sn#229810 filedate 1976-08-11 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	NOT A NEW PAR
C00007 00003	A table for testing TJ commands
C00013 00004	VERSION WITH STICKEY SWITCHES
C00039 ENDMK
C⊗;
NOT A NEW PAR
    NEW PAR STARTS HERE
	   This started with a TAB.

    The Jget command should accept some typed-in margins and it should,
when so ordered, complete the set of margins by inspecting a specified
range of the text that is being editer.  Margin values consist of The
paragraph indentation (refered to as PMAR).  The normal left indentation
(LMAR), the last right-most column to be occupied by the text (RMAR), and
the number of blank lines that are to precede the individual paragraphs
(BNUM).  It is anticipated that one might very well have a variety of
different paragraphs on the page, all with different indentations and with
some separated by blank lines and some not so separated.  One should still
be able to use JGET without to much trouble This page has been typed to
illustrate the problem and to provide some text to test out various ideas.

    At the present time I am of the opinion that the following conventions
will handle the situation.

    1) The commands JGET and TJGET may be typed with or without a leading
argument and with or without trailing arguments and with or without there
being anything in the ATTACH buffer.  2) The leading argument specifies
the number of lines of text to be used.  If this number is missing or if
it exceeds the number of lines on the page (or in the ATTACH buffer) then
the inspection extends to the end of the page (or the end of the ATTACH
buffer).  The inspection begins at the arrow location (or at the start of
the ATTACH buffer).  This will be called the first line.

    3) A zero leading argument specifies that no text inspection is to be
made.  In this case the default margin specifications are to be used
unless they are specified in the trailing string of arguments.

    4) The trailing arguments consist of a series of decimal numbers
separated by commas.  Missing arguments are indicated by commas that are
not preceded by numerical values.

    5) If an initial argument is used, then all margins are to be reset to
the values specified by the trailing arguments or, if not so specified,
they are to be infered by an inspection of the text.

    --- 00 01 02 03 04 05 06 07

    000 NUL ↓ α β ∧ ¬ ε π X 010 λ TAB LF VT FF CR ∞ ∂ 002 ⊂ ⊃ ∩ ∪ ∀ ∃ ⊗ ↔
003 _ → ~ ≠ ≤ ≥ ≡ ∨

    αXJUST +3,4,66<cr> Justify the current page or the ATTACH buffer using
temporary margins as specified (in this example to 7, 4 and to 66
respectively).

    αβXJUST ,4,66<cr> Justify the current page or the ATTACH buffer using
new sticky margins as specified.  These new values now become the default
values.  The paragraph indentation will be left at the previously
specified value.

    CONDITIONS ACTION P(old) L(old) B(old) New par.  @ PMAR after BNUM
Other lines at LMAR

    N N 0 for all old lines Overflow only at LMAR N N >0 after blank lines
only Other lines at LMAR >1 0 0 if INDENT>1 or after blank " " " " N ≠N,>0
>0 if INDENT=N or after blank " " " " ZZZZZZZZ
A table for testing TJ commands

        00      01      02      03      04      05      06      07

000     NUL     ↓       α       β       ∧       ¬       ε       π
010     λ       TAB     LF      VT      FF      CR      ∞       ∂
020     ⊂       ⊃       ∩       ∪       ∀       ∃       ⊗       ↔
030     _       →       ~       ≠       ≤       ≥       ≡       ∨
040     SP      !       "       #       $       %       &       '
050     (       )       *       +       ,       -       .       /
060     0       1       2       3       4       5       6       7
070     8       9       :       ;       <       =       >       ?

Still another version

	         00   01   02   03   04   05   06   07

	    000  NUL  ↓    α    β    ∧    ¬    ε    π
	    010  λ    TAB  LF   VT   FF   CR   ∞    ∂
	    020  ⊂    ⊃    ∩    ∪    ∀    ∃    ⊗    ↔
	    030  _    →    ~    ≠    ≤    ≥    ≡    ∨
	    040  SP   !    "    #    $    %    &    '
	    050  (    )    *    +    ,    -    .    /
	    060  0    1    2    3    4    5    6    7
	    070  8    9    :    ;    <    =    >    ?

A very simple table

11  22  33  44
55  66  77  88

123456789 123456789 123456789 123456789 123456789 123456789 123456789

   αβXTJG       This command is used if one wants to find
		the margin and columns spacings from a table
		that already exists either in a desired
		format or a formatted table that is to be
		reformatted in some way.

   For single-page searches the commands are:

123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
αβFSmith<cr>    Find just plain Smith or smith but not this
		string in $smith, in blacksmith or in
		Smithsonian.  Note that % and _ are accepted
		as alphamerics.
αFSmith<cr>     Find smith as an isolated word or as part of
		a longer string (in blacksmith for example).
		The string will be found even where not
		delimited by non-alphamerics.

Round-Robin Scores

vs	1	2	3	4	5	6
1	x


2		x


3			x	15-2
				15-7

4				x


5					x


6						x

Samuel, Art (Dr. Arthur L.)             202     PAE[S,ALS] 2 1000
	501 Portola Road, Portola Valley, 94025  (9) 851-1501 βDec 5

Scheinman, Vic (Mr. Victor D.)          205     SRA[H,VDS] 2 200
	3689 South Court, Palo Alto, 94306,(9) 493-3038  βDec 28

Scherlis, Bill (Mr. William L.)		251	SRA[PV,WLS] 2
	2976 Cowper St., Palo Alto, (9) 494-1932 βAug 28

Schreiber, Joachim (Mr. Joachim F.) 	255C	S[PV,JFS] 2
	P.O. Box 9216, Stanford, 94305 (9) 328-3178  

Shimano, Bruce (Mr. Bruce E.)		230C	SRA[H,BES] 2 450
	1950 Cooley Avenue, #4109, Palo Alto, 94303, (9) 328-0319  βApril 11

Smith, Leland (Prof. Leland C.)         267       P[M*/VB,LCS] 2 900
	3732 Laguna Avenue, Palo Alto, (9) 493-9386  βAug 6

Steinberg, Lou (Mr. Louis I.)			SRA[PSI,LIS] 2 250
	1634 Milvia, No. 6, Berkeley 94709, (57) 845-4833  βJuly 16

Sutton, Rich (Mr. Richard S.)			S[H,RSS] 1
	25Y Manzanita Park, Stanford, 60521, (9) 321-4051  βSept 21


Samuel, Art (Dr. Arthur L.)             202     PAE[S,ALS] 2 1000
Scheinman, Vic (Mr. Victor D.)          205     SRA[H,VDS] 2 200
Scherlis, Bill (Mr. William L.)		251	SRA[PV,WLS] 2
Schreiber, Joachim (Mr. Joachim F.) 	255C	S[PV,JFS] 2
Shimano, Bruce (Mr. Bruce E.)		230C	SRA[H,BES] 2 450
Smith, Leland (Prof. Leland C.)         267       P[M*/VB,LCS] 2 900
Steinberg, Lou (Mr. Louis I.)			SRA[PSI,LIS] 2 250
Sutton, Rich (Mr. Richard S.)			S[H,RSS] 1
VERSION WITH STICKEY SWITCHES

A new ETV is up with major changes to the justification commands, and
with six new instructions added.  All users of these commands are urged
to read E.ALS[UP,DOC] (type <META><CONTROL>?  while using ETV).  Users
not already addicted to the justify commands in ETV might now find these
commands very usefull.

	  Changes to the existing line manipulation commands.

1)  There is now no effective limit to the length of lines that may be handled
    by these commands.  (The actual limit is 131070 characters).

2) Punctuation marks . ! and ?  followed by a space, even with any number of
    closure symbols (such as ", ), ], etc) interposed, are treated as
    sentence endings and are followed by 2 spaces when text is justified.

3)  The fast indent commands ← and → are now primed by the XINDENT command
    and use the absolute indent value associated with the last use of this
    command.  The initial default value is 4.

4)  Negative prefix arguments are now permitted, for example,
    αβ-αβ5αβXJU<CR> now justifies the last 5 lines before, but not including,
    the arrow line.

5)  A zero prefix argument (with commands using margins) causes the existing
    switch setting (see below) and margins to be reported.  Switch settings
    and margin values may be changed, if desired, with a zero-prefixed
    command.  The new values will be stored before making the report, but no
    overt action will be taken, such, for example, as to replace the input
    conditions from the output for a R switch setting, or to get new input
    conditions from the text for a G switch setting. 

6)  Left margins are now specified in terms of indent values not as column
    positions, that is, one types a "0" (not a "1" as formerly) if the line is
    to start with no indent.  This usage is now consistant for all commands.
    (The right margin is still in terms of column position and so specifies
    the number of chararacters on a line when the left indent is zero.)

7)  The number of blank lines (B) to be used between paragraphs may now be
    specified by typing a fourth suffixing number (it may be 0).  The
    default situation calls for there to be the same number of
    blank lines between individual paragraphs after justification as there
    were in the original text.  This default situation may be reset by
    typing -1 as the fourth number and it is reset automatically when other
    margin values are changed unless the desired B value is retyped.

8)  All margin specifications are now sticky, that is, if no margins are specified 
    then the values previously specified are used by default.  The original
    default values are: 4,0,72,-1.  This means that, the crown lines (first lines
    of new paragraphs) will be indented by 4, the main body of the text will
    have 0 indent, the right hand margin  will end at colomn 74 and the 
    same number of blank lines will be used between paragraphs as in the
    original text.  Note, that the B value (see 7 above) is only provisionally
    sticky.

9)  Indents can no longer be specified relatively.  This feature was seldom
    used, it could be interpreted ambigously, and it is unnecessary.

10)  All left margin indents now use TABs whenever possible.

11)  New paragraphs, in the text that is being justified, can now be detected
    in a variety of different ways.  However because of long usage, a line of
    text that is preceded by a blank line is still always assumed to start a
    new paragraph.

    The default or Normal condition (Set by the N switch, see below) is for
    a new paragraph to be signalled either by the presence of a preceding
    blank line or by an indent that is greater than 1.  Users who have used
    initial TABS as paragraph indicators may continue their usual practice.
    However, it is now possible to handle text that is not in the, so called,
    normal form.

12) SWITCHES

    XJUST and XJFILL now accept certain switches which affect the
    way these commands react to left margin indents in the text that is
    being justified. These switches are sticky, that is, once a switch is
    set, the conditions specified by the switch continue to hold for
    subsequent uses of the XJUST and XJFILL commands when no new switch
    is specified.

    Switches are typed as a single letter following the command name.  A
    switch is separated from the command either by a slash "/" or by a
    space and is separated from any margin values that may follow by
    another space).

    The initial default conditions correspond to those specified by the "N"
    switch as described below, that is, a preceding blank line or any indent
    of more than 1 space (a TAB counts as 8 spaces) signals the start of a 
    new paragraph.

Switch	Mneumonic 	Conditions in old text identifying a new paragraph
				(Besides preceding blank line)

N	Normal		Any indent >1
G	Get		Exact indent as gotten by examining specified text.
R       Rejustify       Exact indent (P value) previously specified.
E	Exact		Exact input paragraph indent previously used.

    For completeness, the range of usage for these different switches and
    their individual characteristics will be described below.

N   This is the default switch and the switch that will most often be used,
    certainly by the casual uses.

    The body of the text is assumed to be without any indent and all lines
    that are either preceded by a blank line or that are indented by more than
    one space (or a Tab) are assumed to start a new paragraph.


G   The G switch causes ETV to determine the initial situation by examining
    the text itself.

    This switch may be used if one wants to justify some text that is
    neither in the, so called, Normal format (when the N switch is used)
    nor in the format that has most recently been established by an earlier
    XJUST or XJFILL command (when the R switch is safer and faster).

    Care must be taken in using the G switch as the conditions to be used
    for making new-paragraph decisions are determined and then put to use
    without the user being able to verify the conditions before they are
    applied.  A slower but safe procedure is to use the XGET command to
    get ETV to the determine and display te margin conditions that it finds.
    One can verify these conditions by inspection, and then use the R switch
    with the justifying command to effect the desired justification.

    With the G switch, ETV examines the designated text, firstly to see if
    there are any blank lines.  If there are ETV assumes that the first line
    after this blank line is the start of a new paragraph.  If there are no
    blank lines in the designated text, ETV then gets the indentations for the
    first two lines and if these are not the same it assumes that the first
    one starts a paragraph (note that this means tha the text to be justified
    can not start with the last line of a paragraph).  If the first two lines
    examined have the same indent these are assumed to be normal text and the
    first line that has a different indent is assumed to start a paragraph.

R   The R switch causes the former output conditions to be used as the new
    input test conditions.

    This is the switch to use if one makes some editing changes to text that
    one has just put into some non-standard form.  It may also be used
    on text that is in any arbitrary form by first letting ETV determine
    the existing margin conditions using the new  XJGET  command.

E   The E switch causes the existing input conditions to be retained.

    This is the switch to use if one has previously established conditions
    for justifying some non-normal text and now wants to justify another
    portion of text that conforms to the earlier established input
    conditions.

13) XJGET
    A new command XJGET has been added that determines the margin values
    of a designated portion of text in a manner similar to that discribed
    for the G switch above but it causes these data to be store as the
    margin values that will be used for subsequent XJUST or XJFILL commands.

    The right margin value is determined from the longest line in the sample.
    The blank line control is reset to the initial default condition.

    This command allows one to use a portion of the text that is already in the
    desired format as a sample of what is wanted, while the G switch gives
    ETV the task of determing the existing margins in the text that is to be
    justified. 

    
14) XJSEPARATE  This is a new command that separates a designated portion of
    text into individual sentences.

    The sentences all begin at the specified normal left margin and any
    blank lines that were in the original text are retained.  The sentences
    can then be easily rearranged for subsequent reformatting by the XJUST
    and XJFILL commands).  Note that crown line indents are lost.


		New commands for use with tabular material

Four new commands have been added that permit one to handle tabular material
in a manner analogous to way in which normal text can be treated.

Two types of commands are provided to take care of the two classes of input data
that are most apt to be encountered, these being:

A)  Tabular material that is in proper columnar alignment but that may have
    missing entries.

    The XTABLE command is intended for use with such material.

B)  Tabular material that is not be in proper columnar alignment, but where the
    entries are separated by at least 2 spaces or by TABs. There may also be
    normal text associated with eash tabular line which is to be justified.
    Of course, in this case there can be no missing entries.

    The XTJFILL and XTJUST commands are intended for use under these conditions.

These new Tabular commands require the specification of additional values in
addition to the P,L,R.B values specified with the XJUST and XJFILL commands.
Of course, just as for these older commands, default values may be used and
only those values that are to be changed nedd to be specified.  Switches and
margins are specified as usual (with some restrictions which will be described
later).

When new values are to be typed, these must start with a semicolon ";" and
they are to be separated by commas. Values not otherwise marked are taken to
be field lengths, that is the string ;5,8,9<CR> is taken to mean that there
are to be three columns the first one starting with an indent as specified by
the P value and with a field length of 5 character positions, this is to be
followed by a second field of 8 character positions, then one with a field
length of 9. These values supercede the field lengths that had previously
been specified for the first three fields and if still additional fields had
been specified these are to be retained and shifted to the right or left
as may be required because of the changed to the first three fields.

When several fields are to have the same length these fields may be specified
by the use of the @ sign, thus 9@5,7 means that there are to be 9 fields of
length 5 followed by a field of length 9.  Fields that are to be left the
same may be skipped by the use of commas without numbers, thus ,,7 means
leave the first two columns unchanged and make the next one with a length of 7.
Similarly 4@0,3@5 means leave the first 4 columns unchanged and make the
next 3 columns with lengths of 5.  Note that zero, in this case, does not mean
a column of zero length but means no change.

Fields must have widths of 3 or more to permit a single character and to
allow for there to be two spaces between the characters in different columns.
Should any particular entry be too long for the width specified, the next
entry is automatically moved to the right so as to preserve the desired
separation between columns.  Such excesses may propagate.

A fourth command  XTJGET  has been provided to perform the same function for
tabular material that is performed for ordinary text by the XGET command.
It should be noted that this command must deternine the positions of each
column as well as the left margins and so it must be given when the designeted
text is restricted to start with a taabular line in which there are no missing
entries.

The complete specificationns for these new tabular commands will be listed below.

XTABLE 


This command must have been previously primed by means of the XTGET command
so as to have information regarding the existing state of the input material.
Information regarding the desired new format may then be typed with the
command or it may be obtained from the text if there is available a sample
with this desired format by a second XTGET command.  Note that the old
format must be the first one established.

 This command will accept a prefix argument defining the number of lines
to be processed and a series of suffexed arguments similar in every respect to
the syntax used with XFILL and XJUST.  One may, in addition type additional
as to the desired tabular fields by typing a semicolon ";" followed by a series
of decimal numbers which define the field lengths to be used.  If several fields 
are to be all the same length the syntax, 5@7 for example, may be used meaning
in this case that there are to be 5 fields of 7 characters positions each.  
Alternately it is possible to define a field in terms of the last colmnar
position that it is to occupy by prefacing the number with an exclamation mark
"!".  Note that it is not possible to specify the starting column as this is
set by the cumulative lengths of the preceding fields.

For example, the command αβ7αβXTAble 4;10,6@5,!60<CR> would specify that there
be 8 fields with the first one occupying 10 columns starting at an indent of 4
then there are to be 6 fields each occuping 7 columns and a final field ending 
at column 60. The starting indent for this last field is obtainable by adding
up the columns already accounted for (44) and so the last field is to
be 16 columns wide.  Note that it is only necessary to type a single number
before the semicolon as this commands starts all lines with the new paragraph
indent, the normal left margin indent is not used and the program automatically
determines the right margin value from the accumulated column count.

This command requires information as to the existing format of the
data to be reformatted and information as to the desired new format.  The old
format can most easily be obtained by usee of the XTJGET command.  The new format
imformation can then be typed in with the XTABLE command or it my also be
obtained from an existing table (or portion of a table) that is already in
the desired format by using XTJGET a second time.  Note especially that the old
format must be obtained before the new format is obtained even though it might
be convenient in some instances to reverse the order.


A)  The data may be separated into fields separated by 2 or more spaces (or a YAB)
between fields, but the fields may not be in alignment.  The table must of necessity
not contain any missing fields.

B)  The data is in proper alignment, in which case there may be missing entries.

2)  XTJUST  This command re-aligns tabular data and justifies associated text,
    subject to the condition that there be no empty entries in the original table.
    The different entries need not be aligned initially but at least 2 spaces, or
    a TAB, must separate entries.

    The desired columnar conditions may be defined by reference to data that
    is properly spaced by using the XTGET command or the column sizes may be
    typed as numbers following a semicolon ";" which after any normal margin
    specifying numbers that may have followed the command.